#---
# Excerpted from "Agile Web Development with Rails, 3rd Ed.",
# published by The Pragmatic Bookshelf.
# Copyrights apply to this code. It may not be used to create training material, 
# courses, books, articles, and the like. Contact us if you are in doubt.
# We make no guarantees that this code is fit for any purpose. 
# Visit http://www.pragmaticprogrammer.com/titles/rails3 for more book information.
#---
class StoreController < ApplicationController
  
  before_filter :find_cart,:except => :empty_cart
  
  def index
    @products = Product.find_products_for_sale
    @cart = find_cart
    flash[:noticle] = "Hi 欢迎！！"
  end
  
  def add_to_cart
    product = Product.find(params[:id])       
    @cart = find_cart
    @current_item = @cart.add_product(product)
    respond_to do |format|
      format.js if request.xhr?
      format.html {redirect_to_index}
    end
  rescue ActiveRecord::RecordNotFound
    logger.error("产品无法访问或者不存在#{params[:id]}")
    redirect_to_index("未经许可的产品ID");
  end
  
  def checkout
    @cart = find_cart
    if @cart.items.empty?
      redirect_to_index("购物车为空");
    else
      @order = Order.new
    end
  end
  
  def empty_cart
    session[:cart] = nil
    redirect_to_index
  end
  
  def save_order
    @cart = find_cart
    @order = Order.new(params[:order])
    @order.add_line_items_form_cart(@cart)
    if @order.save
      session[:cart] = nil
      redirect_to_index("感谢您的订购");
    else
      render :action => :checkout
    end
  end
  
private
  #初始化一个新的购物车对象
  def find_cart
    @cart = session[:cart] ||= Cart.new
  end
  #跳转到首页
  def redirect_to_index(msg=nil)
    flash[:notice] = msg if msg
    redirect_to :action => "index"
  end
  
  protected
  def authorize
  end
end